Load libraries

library(knitr)
library(rmdformats)
library(ggplot2)
library(ggpubr)
library(GGally)
library(car)
library(tidyverse)
library(lme4)
library(lmerTest)
library("MuMIn")
library(lmtest)
library(boot)

Read datasets

AllSubs_NeuralActivation <- read.csv('/Users/luisalvarez/Documents/GitHub/RM_Thesis_Neuroforecasting/ProcessedData/AllSubs_NeuralActivation_Aggregate_Combined_clean.csv')

AllSubs_NeuralActivation_Comedy <- read.csv('/Users/luisalvarez/Documents/GitHub/RM_Thesis_Neuroforecasting/ProcessedData/AllSubs_NeuralActivation_Aggregate_Combined_Comedy_clean.csv')

AllSubs_NeuralActivation_Horror <- read.csv('/Users/luisalvarez/Documents/GitHub/RM_Thesis_Neuroforecasting/ProcessedData/AllSubs_NeuralActivation_Aggregate_Combined_Horror_clean.csv')

Create data frames for each model.

# Define aggregate variables. 
All_Gross_M1_log <- log(AllSubs_NeuralActivation$Gross_US_M1)
All_Theaters_M1 <- AllSubs_NeuralActivation$Theaters_US_M1

Comedy_Gross_M1_log <- log(AllSubs_NeuralActivation_Comedy$Gross_US_M1)
Comedy_Theaters_M1 <- AllSubs_NeuralActivation_Comedy$Theaters_US_M1

Horror_Gross_M1_log <- log(AllSubs_NeuralActivation_Horror$Gross_US_M1)
Horror_Theaters_M1 <- AllSubs_NeuralActivation_Horror$Theaters_US_M1
  
M1_df <- data.frame(All_Gross_M1_log, All_Theaters_M1) 
M1_C_df <- data.frame(Comedy_Gross_M1_log, Comedy_Theaters_M1) 
M1_H_df <- data.frame(Horror_Gross_M1_log, Horror_Theaters_M1) 

# Define affect variables.
All_PA <- AllSubs_NeuralActivation$Pos_arousal_scaled
All_NA <- AllSubs_NeuralActivation$Neg_arousal_scaled

Comedy_PA <- AllSubs_NeuralActivation_Comedy$Pos_arousal_scaled
Comedy_NA <- AllSubs_NeuralActivation_Comedy$Neg_arousal_scaled

Horror_PA <- AllSubs_NeuralActivation_Horror$Pos_arousal_scaled
Horror_NA <- AllSubs_NeuralActivation_Horror$Neg_arousal_scaled

M2_df <- data.frame(All_Gross_M1_log, All_PA, All_NA) 
M2_C_df <- data.frame(Comedy_Gross_M1_log, Comedy_PA, Comedy_NA) 
M2_H_df <- data.frame(Horror_Gross_M1_log, Horror_PA, Horror_NA) 
# Define ISC variables. 
All_NAcc_ISC <- AllSubs_NeuralActivation$NAcc_ISC
All_AIns_ISC <- AllSubs_NeuralActivation$AIns_ISC
All_MPFC_ISC <- AllSubs_NeuralActivation$MPFC_ISC

Comedy_NAcc_ISC <- AllSubs_NeuralActivation_Comedy$NAcc_ISC
Comedy_AIns_ISC <- AllSubs_NeuralActivation_Comedy$AIns_ISC
Comedy_MPFC_ISC <- AllSubs_NeuralActivation_Comedy$MPFC_ISC

Horror_NAcc_ISC <- AllSubs_NeuralActivation_Horror$NAcc_ISC
Horror_AIns_ISC <- AllSubs_NeuralActivation_Horror$AIns_ISC
Horror_MPFC_ISC <- AllSubs_NeuralActivation_Horror$MPFC_ISC

# Define models. 
M4_df <- data.frame(All_NAcc_ISC, All_AIns_ISC, All_MPFC_ISC) 
M4_C_df <- data.frame(Comedy_NAcc_ISC, Comedy_AIns_ISC, Comedy_MPFC_ISC) 
M4_H_df <- data.frame(Horror_NAcc_ISC, Horror_AIns_ISC, Horror_MPFC_ISC) 

M5_df <- data.frame(All_Gross_M1_log, All_PA, All_NA, All_NAcc_ISC, All_AIns_ISC, All_MPFC_ISC) 
M5_C_df <- data.frame(Comedy_Gross_M1_log, Comedy_PA, Comedy_NA, Comedy_NAcc_ISC, Comedy_AIns_ISC, Comedy_MPFC_ISC) 
M5_H_df <- data.frame(Horror_Gross_M1_log, Horror_PA, Horror_NA, Horror_NAcc_ISC, Horror_AIns_ISC, Horror_MPFC_ISC) 
# Define whole variables. 
All_NAcc_whole <- AllSubs_NeuralActivation$NAcc_whole
All_AIns_whole <- AllSubs_NeuralActivation$AIns_whole
All_MPFC_whole <- AllSubs_NeuralActivation$MPFC_whole

Comedy_NAcc_whole <- AllSubs_NeuralActivation_Comedy$NAcc_whole
Comedy_AIns_whole <- AllSubs_NeuralActivation_Comedy$AIns_whole
Comedy_MPFC_whole <- AllSubs_NeuralActivation_Comedy$MPFC_whole

Horror_NAcc_whole <- AllSubs_NeuralActivation_Horror$NAcc_whole
Horror_AIns_whole <- AllSubs_NeuralActivation_Horror$AIns_whole
Horror_MPFC_whole <- AllSubs_NeuralActivation_Horror$MPFC_whole

# Define models. 
M6_df <- data.frame(All_NAcc_whole, All_AIns_whole, All_MPFC_whole) 
M6_C_df <- data.frame(Comedy_NAcc_whole, Comedy_AIns_whole, Comedy_MPFC_whole) 
M6_H_df <- data.frame(Horror_NAcc_whole, Horror_AIns_whole, Horror_MPFC_whole) 

M7_df <- data.frame(All_Gross_M1_log, All_PA, All_NA, All_NAcc_whole, All_AIns_whole, All_MPFC_whole) 
M7_C_df <- data.frame(Comedy_Gross_M1_log, Comedy_PA, Comedy_NA, Comedy_NAcc_whole,
                      Comedy_AIns_whole, Comedy_MPFC_whole) 
M7_H_df <- data.frame(Horror_Gross_M1_log, Horror_PA, Horror_NA, Horror_NAcc_whole,
                      Horror_AIns_whole, Horror_MPFC_whole) 
# Define onset variables. 
All_NAcc_onset <- AllSubs_NeuralActivation$NAcc_onset
All_AIns_onset <- AllSubs_NeuralActivation$AIns_onset
All_MPFC_onset <- AllSubs_NeuralActivation$MPFC_onset

Comedy_NAcc_onset <- AllSubs_NeuralActivation_Comedy$NAcc_onset
Comedy_AIns_onset <- AllSubs_NeuralActivation_Comedy$AIns_onset
Comedy_MPFC_onset <- AllSubs_NeuralActivation_Comedy$MPFC_onset

Horror_NAcc_onset <- AllSubs_NeuralActivation_Horror$NAcc_onset
Horror_AIns_onset <- AllSubs_NeuralActivation_Horror$AIns_onset
Horror_MPFC_onset <- AllSubs_NeuralActivation_Horror$MPFC_onset

# Define models. 
M8_df <- data.frame(All_NAcc_onset, All_AIns_onset, All_MPFC_onset) 
M8_C_df <- data.frame(Comedy_NAcc_onset, Comedy_AIns_onset, Comedy_MPFC_onset) 
M8_H_df <- data.frame(Horror_NAcc_onset, Horror_AIns_onset, Horror_MPFC_onset) 

M9_df <- data.frame(All_Gross_M1_log, All_PA, All_NA, All_NAcc_onset, All_AIns_onset, All_MPFC_onset) 
M9_C_df <- data.frame(Comedy_Gross_M1_log, Comedy_PA, Comedy_NA, Comedy_NAcc_onset,
                      Comedy_AIns_onset, Comedy_MPFC_onset) 
M9_H_df <- data.frame(Horror_Gross_M1_log, Horror_PA, Horror_NA, Horror_NAcc_onset,
                      Horror_AIns_onset, Horror_MPFC_onset) 
# Define middle variables. 
All_NAcc_middle <- AllSubs_NeuralActivation$NAcc_middle
All_AIns_middle <- AllSubs_NeuralActivation$AIns_middle
All_MPFC_middle <- AllSubs_NeuralActivation$MPFC_middle

Comedy_NAcc_middle <- AllSubs_NeuralActivation_Comedy$NAcc_middle
Comedy_AIns_middle <- AllSubs_NeuralActivation_Comedy$AIns_middle
Comedy_MPFC_middle <- AllSubs_NeuralActivation_Comedy$MPFC_middle

Horror_NAcc_middle <- AllSubs_NeuralActivation_Horror$NAcc_middle
Horror_AIns_middle <- AllSubs_NeuralActivation_Horror$AIns_middle
Horror_MPFC_middle <- AllSubs_NeuralActivation_Horror$MPFC_middle

# Define models. 
M10_df <- data.frame(All_NAcc_middle, All_AIns_middle, All_MPFC_middle) 
M10_C_df <- data.frame(Comedy_NAcc_middle, Comedy_AIns_middle, Comedy_MPFC_middle) 
M10_H_df <- data.frame(Horror_NAcc_middle, Horror_AIns_middle, Horror_MPFC_middle) 

M11_df <- data.frame(All_Gross_M1_log, All_PA, All_NA, All_NAcc_middle, All_AIns_middle, All_MPFC_middle) 
M11_C_df <- data.frame(Comedy_Gross_M1_log, Comedy_PA, Comedy_NA, Comedy_NAcc_middle,
                      Comedy_AIns_middle, Comedy_MPFC_middle) 
M11_H_df <- data.frame(Horror_Gross_M1_log, Horror_PA, Horror_NA, Horror_NAcc_middle,
                      Horror_AIns_middle, Horror_MPFC_middle) 
# Define offset variables. 
All_NAcc_offset <- AllSubs_NeuralActivation$NAcc_offset
All_AIns_offset <- AllSubs_NeuralActivation$AIns_offset
All_MPFC_offset <- AllSubs_NeuralActivation$MPFC_offset

Comedy_NAcc_offset <- AllSubs_NeuralActivation_Comedy$NAcc_offset
Comedy_AIns_offset <- AllSubs_NeuralActivation_Comedy$AIns_offset
Comedy_MPFC_offset <- AllSubs_NeuralActivation_Comedy$MPFC_offset

Horror_NAcc_offset <- AllSubs_NeuralActivation_Horror$NAcc_offset
Horror_AIns_offset <- AllSubs_NeuralActivation_Horror$AIns_offset
Horror_MPFC_offset <- AllSubs_NeuralActivation_Horror$MPFC_offset

# Define models. 
M12_df <- data.frame(All_NAcc_offset, All_AIns_offset, All_MPFC_offset) 
M12_C_df <- data.frame(Comedy_NAcc_offset, Comedy_AIns_offset, Comedy_MPFC_offset) 
M12_H_df <- data.frame(Horror_NAcc_offset, Horror_AIns_offset, Horror_MPFC_offset) 

M13_df <- data.frame(All_Gross_M1_log, All_PA, All_NA, All_NAcc_offset, All_AIns_offset, All_MPFC_offset) 
M13_C_df <- data.frame(Comedy_Gross_M1_log, Comedy_PA, Comedy_NA, Comedy_NAcc_offset,
                      Comedy_AIns_offset, Comedy_MPFC_offset) 
M13_H_df <- data.frame(Horror_Gross_M1_log, Horror_PA, Horror_NA, Horror_NAcc_offset,
                      Horror_AIns_offset, Horror_MPFC_offset) 

M14_df <- data.frame(All_Gross_M1_log, All_PA, All_NA, All_NAcc_onset, All_AIns_middle, All_MPFC_offset) 
M14_C_df <- data.frame(Comedy_Gross_M1_log, Comedy_PA, Comedy_NA, Comedy_NAcc_onset,
                      Comedy_AIns_middle, Comedy_MPFC_offset) 
M14_H_df <- data.frame(Horror_Gross_M1_log, Horror_PA, Horror_NA, Horror_NAcc_onset,
                      Horror_AIns_middle, Horror_MPFC_offset) 

Notes:

Neuroforecasting: First Month US.

M1: Aggregste data


Call:
lm(formula = log(Gross_US_M1) ~ Type + +scale(Theaters_US_M1) + 
    Type:scale(Theaters_US_M1), data = AllSubs_NeuralActivation %>% 
    mutate(Type = factor(Type, levels = c("horror", "comedy"))))

Residuals:
     Min       1Q   Median       3Q      Max 
-0.77903 -0.23205 -0.05965  0.21883  0.83396 

Coefficients:
                                 Estimate Std. Error t value Pr(>|t|)    
(Intercept)                      17.21275    0.12503 137.673  < 2e-16 ***
Typecomedy                       -0.03297    0.16727  -0.197    0.845    
scale(Theaters_US_M1)             0.96069    0.17747   5.413 1.13e-05 ***
Typecomedy:scale(Theaters_US_M1) -0.24037    0.20114  -1.195    0.243    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.4365 on 26 degrees of freedom
Multiple R-squared:  0.7846,    Adjusted R-squared:  0.7597 
F-statistic: 31.56 on 3 and 26 DF,  p-value: 8.065e-09

           R2m       R2c
[1,] 0.7655209 0.7655209
[1] 41.10136

M2: Affective data alone


Call:
lm(formula = log(Gross_US_M1) ~ Type + scale(Pos_arousal_scaled) + 
    scale(Neg_arousal_scaled) + Type:scale(Pos_arousal_scaled) + 
    Type:scale(Neg_arousal_scaled), data = AllSubs_NeuralActivation %>% 
    mutate(Type = factor(Type, levels = c("horror", "comedy"))))

Residuals:
     Min       1Q   Median       3Q      Max 
-1.28214 -0.72117  0.09017  0.48384  1.31867 

Coefficients:
                                     Estimate Std. Error t value Pr(>|t|)    
(Intercept)                           17.6237     0.6388  27.591   <2e-16 ***
Typecomedy                            -1.8889     1.1201  -1.686    0.105    
scale(Pos_arousal_scaled)             -0.4337     0.5091  -0.852    0.403    
scale(Neg_arousal_scaled)             -0.5115     0.4292  -1.192    0.245    
Typecomedy:scale(Pos_arousal_scaled)   0.8369     0.5671   1.476    0.153    
Typecomedy:scale(Neg_arousal_scaled)  -0.6944     1.1435  -0.607    0.549    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.8382 on 24 degrees of freedom
Multiple R-squared:  0.2666,    Adjusted R-squared:  0.1138 
F-statistic: 1.745 on 5 and 24 DF,  p-value: 0.1628

           R2m       R2c
[1,] 0.2312592 0.2312592
[1] 81.85067

M3: Aggregate and affective data alone


Call:
lm(formula = log(Gross_US_M1) ~ Type + scale(Pos_arousal_scaled) + 
    scale(Neg_arousal_scaled) + Type:scale(Pos_arousal_scaled) + 
    Type:scale(Neg_arousal_scaled), data = AllSubs_NeuralActivation %>% 
    mutate(Type = factor(Type, levels = c("horror", "comedy"))))

Residuals:
     Min       1Q   Median       3Q      Max 
-1.28214 -0.72117  0.09017  0.48384  1.31867 

Coefficients:
                                     Estimate Std. Error t value Pr(>|t|)    
(Intercept)                           17.6237     0.6388  27.591   <2e-16 ***
Typecomedy                            -1.8889     1.1201  -1.686    0.105    
scale(Pos_arousal_scaled)             -0.4337     0.5091  -0.852    0.403    
scale(Neg_arousal_scaled)             -0.5115     0.4292  -1.192    0.245    
Typecomedy:scale(Pos_arousal_scaled)   0.8369     0.5671   1.476    0.153    
Typecomedy:scale(Neg_arousal_scaled)  -0.6944     1.1435  -0.607    0.549    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.8382 on 24 degrees of freedom
Multiple R-squared:  0.2666,    Adjusted R-squared:  0.1138 
F-statistic: 1.745 on 5 and 24 DF,  p-value: 0.1628

           R2m       R2c
[1,] 0.2312592 0.2312592
[1] 81.85067

M4: ISC data alone


Call:
lm(formula = log(Gross_US_M1) ~ Type + +scale(NAcc_ISC) + scale(AIns_ISC) + 
    scale(MPFC_ISC) + Type:scale(NAcc_ISC) + Type:scale(AIns_ISC) + 
    Type:scale(MPFC_ISC), data = AllSubs_NeuralActivation %>% 
    mutate(Type = factor(Type, levels = c("horror", "comedy"))))

Residuals:
     Min       1Q   Median       3Q      Max 
-1.14090 -0.55890  0.00876  0.38761  1.71768 

Coefficients:
                           Estimate Std. Error t value Pr(>|t|)    
(Intercept)                17.36042    0.24509  70.834   <2e-16 ***
Typecomedy                 -0.30276    0.33234  -0.911   0.3722    
scale(NAcc_ISC)             0.84866    0.39246   2.162   0.0417 *  
scale(AIns_ISC)            -0.22265    0.22743  -0.979   0.3382    
scale(MPFC_ISC)            -0.01466    0.35266  -0.042   0.9672    
Typecomedy:scale(NAcc_ISC) -0.87318    0.45156  -1.934   0.0661 .  
Typecomedy:scale(AIns_ISC)  0.22660    0.42109   0.538   0.5959    
Typecomedy:scale(MPFC_ISC)  0.26848    0.41607   0.645   0.5254    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.8646 on 22 degrees of freedom
Multiple R-squared:  0.2847,    Adjusted R-squared:  0.05711 
F-statistic: 1.251 on 7 and 22 DF,  p-value: 0.3187

           R2m       R2c
[1,] 0.2319176 0.2319176
[1] 85.10071

M5: ISC data + affective data + behavioral data


Call:
lm(formula = log(Gross_US_M1) ~ Type + scale(Theaters_US_M1) + 
    scale(Pos_arousal_scaled) + scale(Neg_arousal_scaled) + scale(NAcc_ISC) + 
    scale(AIns_ISC) + scale(MPFC_ISC) + Type:scale(Theaters_US_M1) + 
    Type:scale(Pos_arousal_scaled) + Type:scale(Neg_arousal_scaled) + 
    Type:scale(NAcc_ISC) + Type:scale(AIns_ISC) + Type:scale(MPFC_ISC), 
    data = AllSubs_NeuralActivation %>% mutate(Type = factor(Type, 
        levels = c("horror", "comedy"))))

Residuals:
     Min       1Q   Median       3Q      Max 
-0.61485 -0.19212  0.00446  0.15708  0.56374 

Coefficients:
                                     Estimate Std. Error t value Pr(>|t|)    
(Intercept)                          16.85437    0.36272  46.467  < 2e-16 ***
Typecomedy                           -0.47852    0.68281  -0.701  0.49349    
scale(Theaters_US_M1)                 0.87322    0.25770   3.389  0.00375 ** 
scale(Pos_arousal_scaled)            -0.57228    0.24573  -2.329  0.03330 *  
scale(Neg_arousal_scaled)            -0.15864    0.25195  -0.630  0.53782    
scale(NAcc_ISC)                       0.24684    0.24972   0.988  0.33762    
scale(AIns_ISC)                      -0.12190    0.10939  -1.114  0.28157    
scale(MPFC_ISC)                       0.37644    0.18511   2.034  0.05892 .  
Typecomedy:scale(Theaters_US_M1)     -0.22804    0.28322  -0.805  0.43251    
Typecomedy:scale(Pos_arousal_scaled)  0.71711    0.31280   2.293  0.03576 *  
Typecomedy:scale(Neg_arousal_scaled) -0.67388    0.67056  -1.005  0.32988    
Typecomedy:scale(NAcc_ISC)           -0.28796    0.29943  -0.962  0.35052    
Typecomedy:scale(AIns_ISC)            0.07897    0.23810   0.332  0.74445    
Typecomedy:scale(MPFC_ISC)           -0.30714    0.22457  -1.368  0.19032    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.401 on 16 degrees of freedom
Multiple R-squared:  0.8881,    Adjusted R-squared:  0.7971 
F-statistic: 9.766 on 13 and 16 DF,  p-value: 2.758e-05

           R2m       R2c
[1,] 0.8140503 0.8140503
[1] 41.45386

M6: Neural whole data alone


Call:
lm(formula = log(Gross_US_M1) ~ Type + +scale(NAcc_whole) + scale(AIns_whole) + 
    scale(MPFC_whole) + Type:scale(NAcc_whole) + Type:scale(AIns_whole) + 
    Type:scale(MPFC_whole), data = AllSubs_NeuralActivation %>% 
    mutate(Type = factor(Type, levels = c("horror", "comedy"))))

Residuals:
     Min       1Q   Median       3Q      Max 
-1.30627 -0.50367 -0.05815  0.56563  2.08401 

Coefficients:
                              Estimate Std. Error t value Pr(>|t|)    
(Intercept)                  17.328040   0.335449  51.656   <2e-16 ***
Typecomedy                    0.032407   0.478335   0.068    0.947    
scale(NAcc_whole)            -0.398330   0.307759  -1.294    0.209    
scale(AIns_whole)             0.336009   0.367735   0.914    0.371    
scale(MPFC_whole)             0.082753   0.313350   0.264    0.794    
Typecomedy:scale(NAcc_whole)  0.224602   0.415180   0.541    0.594    
Typecomedy:scale(AIns_whole)  0.267308   0.563928   0.474    0.640    
Typecomedy:scale(MPFC_whole)  0.009879   0.390249   0.025    0.980    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.9063 on 22 degrees of freedom
Multiple R-squared:  0.2139,    Adjusted R-squared:  -0.03618 
F-statistic: 0.8554 on 7 and 22 DF,  p-value: 0.5554

           R2m       R2c
[1,] 0.1711325 0.1711325
[1] 87.93088

M7: Neural whole data + affective data + behavioral data


Call:
lm(formula = log(Gross_US_M1) ~ Type + scale(Theaters_US_M1) + 
    scale(Pos_arousal_scaled) + scale(Neg_arousal_scaled) + scale(NAcc_whole) + 
    scale(AIns_whole) + scale(MPFC_whole) + Type:scale(Theaters_US_M1) + 
    Type:scale(Pos_arousal_scaled) + Type:scale(Neg_arousal_scaled) + 
    Type:scale(NAcc_whole) + Type:scale(AIns_whole) + Type:scale(MPFC_whole), 
    data = AllSubs_NeuralActivation %>% mutate(Type = factor(Type, 
        levels = c("horror", "comedy"))))

Residuals:
     Min       1Q   Median       3Q      Max 
-0.65278 -0.19608 -0.02973  0.18957  0.67916 

Coefficients:
                                     Estimate Std. Error t value Pr(>|t|)    
(Intercept)                          16.51636    0.44408  37.192  < 2e-16 ***
Typecomedy                           -0.23883    0.81498  -0.293  0.77325    
scale(Theaters_US_M1)                 0.88816    0.21290   4.172  0.00072 ***
scale(Pos_arousal_scaled)            -0.75658    0.41695  -1.815  0.08838 .  
scale(Neg_arousal_scaled)             0.02302    0.29660   0.078  0.93909    
scale(NAcc_whole)                    -0.21687    0.16299  -1.331  0.20198    
scale(AIns_whole)                     0.25321    0.19573   1.294  0.21416    
scale(MPFC_whole)                     0.26510    0.23053   1.150  0.26705    
Typecomedy:scale(Theaters_US_M1)     -0.29817    0.25469  -1.171  0.25887    
Typecomedy:scale(Pos_arousal_scaled)  0.92021    0.44743   2.057  0.05641 .  
Typecomedy:scale(Neg_arousal_scaled) -1.13177    0.86775  -1.304  0.21060    
Typecomedy:scale(NAcc_whole)          0.09934    0.26758   0.371  0.71532    
Typecomedy:scale(AIns_whole)          0.06334    0.35150   0.180  0.85925    
Typecomedy:scale(MPFC_whole)         -0.23020    0.26207  -0.878  0.39273    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.4408 on 16 degrees of freedom
Multiple R-squared:  0.8648,    Adjusted R-squared:  0.7549 
F-statistic: 7.871 on 13 and 16 DF,  p-value: 0.0001103

           R2m       R2c
[1,] 0.7791755 0.7791755
[1] 47.12669

M8: Neural onset data alone


Call:
lm(formula = log(Gross_US_M1) ~ Type + +scale(NAcc_onset) + scale(AIns_onset) + 
    scale(MPFC_onset) + Type:scale(NAcc_onset) + Type:scale(AIns_onset) + 
    Type:scale(MPFC_onset), data = AllSubs_NeuralActivation %>% 
    mutate(Type = factor(Type, levels = c("horror", "comedy"))))

Residuals:
     Min       1Q   Median       3Q      Max 
-1.54731 -0.63530  0.02601  0.60513  1.56592 

Coefficients:
                             Estimate Std. Error t value Pr(>|t|)    
(Intercept)                  17.48440    0.27161  64.374   <2e-16 ***
Typecomedy                   -0.48913    0.37162  -1.316    0.202    
scale(NAcc_onset)            -0.22314    0.29498  -0.756    0.457    
scale(AIns_onset)             0.03296    0.32983   0.100    0.921    
scale(MPFC_onset)             0.09290    0.29382   0.316    0.755    
Typecomedy:scale(NAcc_onset)  0.52222    0.38334   1.362    0.187    
Typecomedy:scale(AIns_onset) -0.08875    0.47760  -0.186    0.854    
Typecomedy:scale(MPFC_onset)  0.21739    0.43509   0.500    0.622    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.8815 on 22 degrees of freedom
Multiple R-squared:  0.2563,    Adjusted R-squared:  0.01972 
F-statistic: 1.083 on 7 and 22 DF,  p-value: 0.4068

          R2m      R2c
[1,] 0.207291 0.207291
[1] 86.2672

M9: Neural onset data + affective data + behavioral data


Call:
lm(formula = log(Gross_US_M1) ~ Type + scale(Theaters_US_M1) + 
    scale(Pos_arousal_scaled) + scale(Neg_arousal_scaled) + scale(NAcc_onset) + 
    scale(AIns_onset) + scale(MPFC_onset) + Type:scale(Theaters_US_M1) + 
    Type:scale(Pos_arousal_scaled) + Type:scale(Neg_arousal_scaled) + 
    Type:scale(NAcc_onset) + Type:scale(AIns_onset) + Type:scale(MPFC_onset), 
    data = AllSubs_NeuralActivation %>% mutate(Type = factor(Type, 
        levels = c("horror", "comedy"))))

Residuals:
     Min       1Q   Median       3Q      Max 
-0.52014 -0.23876 -0.03615  0.23756  0.56132 

Coefficients:
                                     Estimate Std. Error t value Pr(>|t|)    
(Intercept)                          17.23608    0.44725  38.538  < 2e-16 ***
Typecomedy                           -0.29540    0.73467  -0.402   0.6929    
scale(Theaters_US_M1)                 0.98867    0.18438   5.362 6.35e-05 ***
scale(Pos_arousal_scaled)            -0.52722    0.30611  -1.722   0.1043    
scale(Neg_arousal_scaled)            -0.25979    0.29657  -0.876   0.3940    
scale(NAcc_onset)                    -0.23996    0.13220  -1.815   0.0883 .  
scale(AIns_onset)                    -0.37559    0.19692  -1.907   0.0746 .  
scale(MPFC_onset)                     0.17179    0.16376   1.049   0.3098    
Typecomedy:scale(Theaters_US_M1)     -0.28062    0.21540  -1.303   0.2111    
Typecomedy:scale(Pos_arousal_scaled)  0.62228    0.33770   1.843   0.0840 .  
Typecomedy:scale(Neg_arousal_scaled) -0.01848    0.68295  -0.027   0.9787    
Typecomedy:scale(NAcc_onset)          0.31243    0.19561   1.597   0.1298    
Typecomedy:scale(AIns_onset)          0.49121    0.25451   1.930   0.0715 .  
Typecomedy:scale(MPFC_onset)         -0.33722    0.23564  -1.431   0.1716    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.3919 on 16 degrees of freedom
Multiple R-squared:  0.8931,    Adjusted R-squared:  0.8062 
F-statistic: 10.28 on 13 and 16 DF,  p-value: 1.964e-05

           R2m       R2c
[1,] 0.8217067 0.8217067
[1] 40.08036

M10: Neural middle data alone


Call:
lm(formula = log(Gross_US_M1) ~ Type + +scale(NAcc_middle) + 
    scale(AIns_middle) + scale(MPFC_middle) + Type:scale(NAcc_middle) + 
    Type:scale(AIns_middle) + Type:scale(MPFC_middle), data = AllSubs_NeuralActivation %>% 
    mutate(Type = factor(Type, levels = c("horror", "comedy"))))

Residuals:
    Min      1Q  Median      3Q     Max 
-1.4541 -0.3154  0.1051  0.3763  1.3125 

Coefficients:
                              Estimate Std. Error t value Pr(>|t|)    
(Intercept)                   17.51996    0.26559  65.967   <2e-16 ***
Typecomedy                    -0.31587    0.37340  -0.846   0.4067    
scale(NAcc_middle)            -0.15908    0.28861  -0.551   0.5871    
scale(AIns_middle)             0.03209    0.24933   0.129   0.8988    
scale(MPFC_middle)            -0.28819    0.19984  -1.442   0.1634    
Typecomedy:scale(NAcc_middle) -0.45202    0.36290  -1.246   0.2260    
Typecomedy:scale(AIns_middle)  0.56774    0.41899   1.355   0.1892    
Typecomedy:scale(MPFC_middle)  0.75555    0.32730   2.308   0.0308 *  
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.7834 on 22 degrees of freedom
Multiple R-squared:  0.4127,    Adjusted R-squared:  0.2258 
F-statistic: 2.208 on 7 and 22 DF,  p-value: 0.07364

           R2m       R2c
[1,] 0.3476784 0.3476784
[1] 79.18813

M11: Neural middle data + affective data + behavioral data


Call:
lm(formula = log(Gross_US_M1) ~ Type + scale(Theaters_US_M1) + 
    scale(Pos_arousal_scaled) + scale(Neg_arousal_scaled) + scale(NAcc_middle) + 
    scale(AIns_middle) + scale(MPFC_middle) + Type:scale(Theaters_US_M1) + 
    Type:scale(Pos_arousal_scaled) + Type:scale(Neg_arousal_scaled) + 
    Type:scale(NAcc_middle) + Type:scale(AIns_middle) + Type:scale(MPFC_middle), 
    data = AllSubs_NeuralActivation %>% mutate(Type = factor(Type, 
        levels = c("horror", "comedy"))))

Residuals:
     Min       1Q   Median       3Q      Max 
-0.49625 -0.27626 -0.02888  0.22118  0.91754 

Coefficients:
                                     Estimate Std. Error t value Pr(>|t|)    
(Intercept)                          16.73131    0.41218  40.592  < 2e-16 ***
Typecomedy                           -0.16655    0.67273  -0.248 0.807617    
scale(Theaters_US_M1)                 1.13536    0.26261   4.323 0.000524 ***
scale(Pos_arousal_scaled)            -0.44376    0.28929  -1.534 0.144567    
scale(Neg_arousal_scaled)            -0.02369    0.27614  -0.086 0.932700    
scale(NAcc_middle)                    0.20480    0.19679   1.041 0.313465    
scale(AIns_middle)                    0.07197    0.14564   0.494 0.627891    
scale(MPFC_middle)                    0.07182    0.13765   0.522 0.608980    
Typecomedy:scale(Theaters_US_M1)     -0.53691    0.29533  -1.818 0.087832 .  
Typecomedy:scale(Pos_arousal_scaled)  0.56395    0.33421   1.687 0.110920    
Typecomedy:scale(Neg_arousal_scaled) -0.61657    0.75047  -0.822 0.423387    
Typecomedy:scale(NAcc_middle)        -0.32152    0.25418  -1.265 0.224017    
Typecomedy:scale(AIns_middle)         0.02900    0.31858   0.091 0.928609    
Typecomedy:scale(MPFC_middle)         0.07600    0.21757   0.349 0.731395    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.4529 on 16 degrees of freedom
Multiple R-squared:  0.8572,    Adjusted R-squared:  0.7413 
F-statistic: 7.391 on 13 and 16 DF,  p-value: 0.0001632

           R2m       R2c
[1,] 0.7681539 0.7681539
[1] 48.75282

M12: Neural offset data alone


Call:
lm(formula = log(Gross_US_M1) ~ Type + +scale(NAcc_offset) + 
    scale(AIns_offset) + scale(MPFC_offset) + Type:scale(NAcc_offset) + 
    Type:scale(AIns_offset) + Type:scale(MPFC_offset), data = AllSubs_NeuralActivation %>% 
    mutate(Type = factor(Type, levels = c("horror", "comedy"))))

Residuals:
    Min      1Q  Median      3Q     Max 
-1.6064 -0.4941  0.0227  0.2969  1.6417 

Coefficients:
                              Estimate Std. Error t value Pr(>|t|)    
(Intercept)                   17.36157    0.25479  68.140   <2e-16 ***
Typecomedy                    -0.43621    0.36495  -1.195    0.245    
scale(NAcc_offset)            -0.29745    0.25691  -1.158    0.259    
scale(AIns_offset)             0.18003    0.23437   0.768    0.451    
scale(MPFC_offset)             0.34327    0.35971   0.954    0.350    
Typecomedy:scale(NAcc_offset)  0.05793    0.42107   0.138    0.892    
Typecomedy:scale(AIns_offset) -0.39400    0.45519  -0.866    0.396    
Typecomedy:scale(MPFC_offset) -0.55753    0.42946  -1.298    0.208    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.8725 on 22 degrees of freedom
Multiple R-squared:  0.2716,    Adjusted R-squared:  0.03979 
F-statistic: 1.172 on 7 and 22 DF,  p-value: 0.3581

           R2m       R2c
[1,] 0.2204664 0.2204664
[1] 85.64664

M13: Neural offset data + affective data + behavioral data


Call:
lm(formula = log(Gross_US_M1) ~ Type + scale(Theaters_US_M1) + 
    scale(Pos_arousal_scaled) + scale(Neg_arousal_scaled) + scale(NAcc_offset) + 
    scale(AIns_offset) + scale(MPFC_offset) + Type:scale(Theaters_US_M1) + 
    Type:scale(Pos_arousal_scaled) + Type:scale(Neg_arousal_scaled) + 
    Type:scale(NAcc_offset) + Type:scale(AIns_offset) + Type:scale(MPFC_offset), 
    data = AllSubs_NeuralActivation %>% mutate(Type = factor(Type, 
        levels = c("horror", "comedy"))))

Residuals:
     Min       1Q   Median       3Q      Max 
-0.65547 -0.23611  0.00108  0.20239  0.88517 

Coefficients:
                                     Estimate Std. Error t value Pr(>|t|)    
(Intercept)                          17.09650    0.51466  33.219 3.44e-16 ***
Typecomedy                           -0.64142    0.75906  -0.845   0.4106    
scale(Theaters_US_M1)                 0.81173    0.41414   1.960   0.0676 .  
scale(Pos_arousal_scaled)            -0.48404    0.42590  -1.136   0.2725    
scale(Neg_arousal_scaled)            -0.31206    0.54571  -0.572   0.5754    
scale(NAcc_offset)                   -0.04539    0.15048  -0.302   0.7668    
scale(AIns_offset)                    0.19325    0.17091   1.131   0.2748    
scale(MPFC_offset)                    0.14109    0.44483   0.317   0.7552    
Typecomedy:scale(Theaters_US_M1)     -0.13609    0.43329  -0.314   0.7575    
Typecomedy:scale(Pos_arousal_scaled)  0.61643    0.45144   1.365   0.1910    
Typecomedy:scale(Neg_arousal_scaled) -0.50775    0.85587  -0.593   0.5613    
Typecomedy:scale(NAcc_offset)        -0.01557    0.24056  -0.065   0.9492    
Typecomedy:scale(AIns_offset)        -0.01546    0.28297  -0.055   0.9571    
Typecomedy:scale(MPFC_offset)        -0.14299    0.46424  -0.308   0.7621    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.4617 on 16 degrees of freedom
Multiple R-squared:  0.8516,    Adjusted R-squared:  0.7311 
F-statistic: 7.065 on 13 and 16 DF,  p-value: 0.0002153

           R2m       R2c
[1,] 0.7600297 0.7600297
[1] 49.90823

M14: Sequence Model


Call:
lm(formula = log(Gross_US_M1) ~ Type + scale(Theaters_US_M1) + 
    scale(NAcc_onset) + scale(AIns_middle) + scale(MPFC_offset) + 
    Type:scale(NAcc_onset) + Type:scale(AIns_middle) + Type:scale(MPFC_offset), 
    data = AllSubs_NeuralActivation %>% mutate(Type = factor(Type, 
        levels = c("horror", "comedy"))))

Residuals:
     Min       1Q   Median       3Q      Max 
-0.55889 -0.31621 -0.01031  0.24250  0.74002 

Coefficients:
                               Estimate Std. Error t value Pr(>|t|)    
(Intercept)                   17.137189   0.139091 123.208  < 2e-16 ***
Typecomedy                     0.067211   0.195551   0.344   0.7345    
scale(Theaters_US_M1)          0.783030   0.095518   8.198 5.56e-08 ***
scale(NAcc_onset)             -0.402865   0.156592  -2.573   0.0177 *  
scale(AIns_middle)             0.254312   0.132874   1.914   0.0694 .  
scale(MPFC_offset)             0.073500   0.176927   0.415   0.6820    
Typecomedy:scale(NAcc_onset)   0.526895   0.188101   2.801   0.0107 *  
Typecomedy:scale(AIns_middle) -0.264688   0.215387  -1.229   0.2327    
Typecomedy:scale(MPFC_offset) -0.002704   0.210806  -0.013   0.9899    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.4139 on 21 degrees of freedom
Multiple R-squared:  0.8435,    Adjusted R-squared:  0.7839 
F-statistic: 14.15 on 8 and 21 DF,  p-value: 7.115e-07

           R2m       R2c
[1,] 0.7960151 0.7960151
[1] 41.51536

M15: Sequence Model 2


Call:
lm(formula = log(Gross_US_M1) ~ Type + scale(Theaters_US_M1) + 
    scale(Pos_arousal_scaled) + scale(Neg_arousal_scaled) + scale(NAcc_onset) + 
    scale(AIns_middle) + scale(MPFC_offset) + Type:scale(Theaters_US_M1) + 
    Type:scale(Pos_arousal_scaled) + Type:scale(Neg_arousal_scaled) + 
    Type:scale(NAcc_onset) + Type:scale(AIns_middle) + Type:scale(MPFC_offset), 
    data = AllSubs_NeuralActivation %>% mutate(Type = factor(Type, 
        levels = c("horror", "comedy"))))

Residuals:
     Min       1Q   Median       3Q      Max 
-0.47757 -0.21349 -0.04138  0.24525  0.58812 

Coefficients:
                                     Estimate Std. Error t value Pr(>|t|)    
(Intercept)                          17.08699    0.37381  45.711   <2e-16 ***
Typecomedy                           -0.41621    0.69549  -0.598   0.5579    
scale(Theaters_US_M1)                 0.70382    0.32503   2.165   0.0458 *  
scale(Pos_arousal_scaled)            -0.59233    0.36787  -1.610   0.1269    
scale(Neg_arousal_scaled)            -0.41907    0.39538  -1.060   0.3049    
scale(NAcc_onset)                    -0.46513    0.16700  -2.785   0.0132 *  
scale(AIns_middle)                    0.27183    0.13628   1.995   0.0634 .  
scale(MPFC_offset)                    0.46078    0.38036   1.211   0.2433    
Typecomedy:scale(Theaters_US_M1)     -0.05661    0.34488  -0.164   0.8717    
Typecomedy:scale(Pos_arousal_scaled)  0.66030    0.39984   1.651   0.1181    
Typecomedy:scale(Neg_arousal_scaled) -0.17568    0.84096  -0.209   0.8372    
Typecomedy:scale(NAcc_onset)          0.53599    0.20810   2.576   0.0203 *  
Typecomedy:scale(AIns_middle)        -0.18637    0.26301  -0.709   0.4888    
Typecomedy:scale(MPFC_offset)        -0.46343    0.39822  -1.164   0.2616    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.3929 on 16 degrees of freedom
Multiple R-squared:  0.8925,    Adjusted R-squared:  0.8052 
F-statistic: 10.22 on 13 and 16 DF,  p-value: 2.04e-05

           R2m       R2c
[1,] 0.8208697 0.8208697
[1] 40.2331

LS0tCnRpdGxlOiAiUiBOb3RlYm9vayIKb3V0cHV0OiBodG1sX25vdGVib29rCi0tLQoKYGBge3Igc2V0dXAsIGluY2x1ZGU9RkFMU0V9CmtuaXRyOjpvcHRzX2NodW5rJHNldChlY2hvID0gVFJVRSkKYGBgCgojIExvYWQgbGlicmFyaWVzCmBgYHtyfQpsaWJyYXJ5KGtuaXRyKQpsaWJyYXJ5KHJtZGZvcm1hdHMpCmxpYnJhcnkoZ2dwbG90MikKbGlicmFyeShnZ3B1YnIpCmxpYnJhcnkoR0dhbGx5KQpsaWJyYXJ5KGNhcikKYGBgCgoKYGBge3IsIHdhcm5pbmcgPSBGQUxTRSwgbWVzc2FnZSA9IEZBTFNFfQpsaWJyYXJ5KHRpZHl2ZXJzZSkKbGlicmFyeShsbWU0KQpsaWJyYXJ5KGxtZXJUZXN0KQpsaWJyYXJ5KCJNdU1JbiIpCmxpYnJhcnkobG10ZXN0KQpsaWJyYXJ5KGJvb3QpCmBgYAoKIyBSZWFkIGRhdGFzZXRzCmBgYHtyfQpBbGxTdWJzX05ldXJhbEFjdGl2YXRpb24gPC0gcmVhZC5jc3YoJy9Vc2Vycy9sdWlzYWx2YXJlei9Eb2N1bWVudHMvR2l0SHViL1JNX1RoZXNpc19OZXVyb2ZvcmVjYXN0aW5nL1Byb2Nlc3NlZERhdGEvQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uX0FnZ3JlZ2F0ZV9Db21iaW5lZF9jbGVhbi5jc3YnKQoKQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uX0NvbWVkeSA8LSByZWFkLmNzdignL1VzZXJzL2x1aXNhbHZhcmV6L0RvY3VtZW50cy9HaXRIdWIvUk1fVGhlc2lzX05ldXJvZm9yZWNhc3RpbmcvUHJvY2Vzc2VkRGF0YS9BbGxTdWJzX05ldXJhbEFjdGl2YXRpb25fQWdncmVnYXRlX0NvbWJpbmVkX0NvbWVkeV9jbGVhbi5jc3YnKQoKQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uX0hvcnJvciA8LSByZWFkLmNzdignL1VzZXJzL2x1aXNhbHZhcmV6L0RvY3VtZW50cy9HaXRIdWIvUk1fVGhlc2lzX05ldXJvZm9yZWNhc3RpbmcvUHJvY2Vzc2VkRGF0YS9BbGxTdWJzX05ldXJhbEFjdGl2YXRpb25fQWdncmVnYXRlX0NvbWJpbmVkX0hvcnJvcl9jbGVhbi5jc3YnKQoKYGBgCgoKIyBDcmVhdGUgZGF0YSBmcmFtZXMgZm9yIGVhY2ggbW9kZWwuCmBgYHtyfQojIERlZmluZSBhZ2dyZWdhdGUgdmFyaWFibGVzLiAKQWxsX0dyb3NzX00xX2xvZyA8LSBsb2coQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uJEdyb3NzX1VTX00xKQpBbGxfVGhlYXRlcnNfTTEgPC0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uJFRoZWF0ZXJzX1VTX00xCgpDb21lZHlfR3Jvc3NfTTFfbG9nIDwtIGxvZyhBbGxTdWJzX05ldXJhbEFjdGl2YXRpb25fQ29tZWR5JEdyb3NzX1VTX00xKQpDb21lZHlfVGhlYXRlcnNfTTEgPC0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uX0NvbWVkeSRUaGVhdGVyc19VU19NMQoKSG9ycm9yX0dyb3NzX00xX2xvZyA8LSBsb2coQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uX0hvcnJvciRHcm9zc19VU19NMSkKSG9ycm9yX1RoZWF0ZXJzX00xIDwtIEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbl9Ib3Jyb3IkVGhlYXRlcnNfVVNfTTEKICAKTTFfZGYgPC0gZGF0YS5mcmFtZShBbGxfR3Jvc3NfTTFfbG9nLCBBbGxfVGhlYXRlcnNfTTEpIApNMV9DX2RmIDwtIGRhdGEuZnJhbWUoQ29tZWR5X0dyb3NzX00xX2xvZywgQ29tZWR5X1RoZWF0ZXJzX00xKSAKTTFfSF9kZiA8LSBkYXRhLmZyYW1lKEhvcnJvcl9Hcm9zc19NMV9sb2csIEhvcnJvcl9UaGVhdGVyc19NMSkgCgojIERlZmluZSBhZmZlY3QgdmFyaWFibGVzLgpBbGxfUEEgPC0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uJFBvc19hcm91c2FsX3NjYWxlZApBbGxfTkEgPC0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uJE5lZ19hcm91c2FsX3NjYWxlZAoKQ29tZWR5X1BBIDwtIEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbl9Db21lZHkkUG9zX2Fyb3VzYWxfc2NhbGVkCkNvbWVkeV9OQSA8LSBBbGxTdWJzX05ldXJhbEFjdGl2YXRpb25fQ29tZWR5JE5lZ19hcm91c2FsX3NjYWxlZAoKSG9ycm9yX1BBIDwtIEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbl9Ib3Jyb3IkUG9zX2Fyb3VzYWxfc2NhbGVkCkhvcnJvcl9OQSA8LSBBbGxTdWJzX05ldXJhbEFjdGl2YXRpb25fSG9ycm9yJE5lZ19hcm91c2FsX3NjYWxlZAoKTTJfZGYgPC0gZGF0YS5mcmFtZShBbGxfR3Jvc3NfTTFfbG9nLCBBbGxfUEEsIEFsbF9OQSkgCk0yX0NfZGYgPC0gZGF0YS5mcmFtZShDb21lZHlfR3Jvc3NfTTFfbG9nLCBDb21lZHlfUEEsIENvbWVkeV9OQSkgCk0yX0hfZGYgPC0gZGF0YS5mcmFtZShIb3Jyb3JfR3Jvc3NfTTFfbG9nLCBIb3Jyb3JfUEEsIEhvcnJvcl9OQSkgCmBgYAoKYGBge3J9CiMgRGVmaW5lIElTQyB2YXJpYWJsZXMuIApBbGxfTkFjY19JU0MgPC0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uJE5BY2NfSVNDCkFsbF9BSW5zX0lTQyA8LSBBbGxTdWJzX05ldXJhbEFjdGl2YXRpb24kQUluc19JU0MKQWxsX01QRkNfSVNDIDwtIEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbiRNUEZDX0lTQwoKQ29tZWR5X05BY2NfSVNDIDwtIEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbl9Db21lZHkkTkFjY19JU0MKQ29tZWR5X0FJbnNfSVNDIDwtIEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbl9Db21lZHkkQUluc19JU0MKQ29tZWR5X01QRkNfSVNDIDwtIEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbl9Db21lZHkkTVBGQ19JU0MKCkhvcnJvcl9OQWNjX0lTQyA8LSBBbGxTdWJzX05ldXJhbEFjdGl2YXRpb25fSG9ycm9yJE5BY2NfSVNDCkhvcnJvcl9BSW5zX0lTQyA8LSBBbGxTdWJzX05ldXJhbEFjdGl2YXRpb25fSG9ycm9yJEFJbnNfSVNDCkhvcnJvcl9NUEZDX0lTQyA8LSBBbGxTdWJzX05ldXJhbEFjdGl2YXRpb25fSG9ycm9yJE1QRkNfSVNDCgojIERlZmluZSBtb2RlbHMuIApNNF9kZiA8LSBkYXRhLmZyYW1lKEFsbF9OQWNjX0lTQywgQWxsX0FJbnNfSVNDLCBBbGxfTVBGQ19JU0MpIApNNF9DX2RmIDwtIGRhdGEuZnJhbWUoQ29tZWR5X05BY2NfSVNDLCBDb21lZHlfQUluc19JU0MsIENvbWVkeV9NUEZDX0lTQykgCk00X0hfZGYgPC0gZGF0YS5mcmFtZShIb3Jyb3JfTkFjY19JU0MsIEhvcnJvcl9BSW5zX0lTQywgSG9ycm9yX01QRkNfSVNDKSAKCk01X2RmIDwtIGRhdGEuZnJhbWUoQWxsX0dyb3NzX00xX2xvZywgQWxsX1BBLCBBbGxfTkEsIEFsbF9OQWNjX0lTQywgQWxsX0FJbnNfSVNDLCBBbGxfTVBGQ19JU0MpIApNNV9DX2RmIDwtIGRhdGEuZnJhbWUoQ29tZWR5X0dyb3NzX00xX2xvZywgQ29tZWR5X1BBLCBDb21lZHlfTkEsIENvbWVkeV9OQWNjX0lTQywgQ29tZWR5X0FJbnNfSVNDLCBDb21lZHlfTVBGQ19JU0MpIApNNV9IX2RmIDwtIGRhdGEuZnJhbWUoSG9ycm9yX0dyb3NzX00xX2xvZywgSG9ycm9yX1BBLCBIb3Jyb3JfTkEsIEhvcnJvcl9OQWNjX0lTQywgSG9ycm9yX0FJbnNfSVNDLCBIb3Jyb3JfTVBGQ19JU0MpIApgYGAKCmBgYHtyfQojIERlZmluZSB3aG9sZSB2YXJpYWJsZXMuIApBbGxfTkFjY193aG9sZSA8LSBBbGxTdWJzX05ldXJhbEFjdGl2YXRpb24kTkFjY193aG9sZQpBbGxfQUluc193aG9sZSA8LSBBbGxTdWJzX05ldXJhbEFjdGl2YXRpb24kQUluc193aG9sZQpBbGxfTVBGQ193aG9sZSA8LSBBbGxTdWJzX05ldXJhbEFjdGl2YXRpb24kTVBGQ193aG9sZQoKQ29tZWR5X05BY2Nfd2hvbGUgPC0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uX0NvbWVkeSROQWNjX3dob2xlCkNvbWVkeV9BSW5zX3dob2xlIDwtIEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbl9Db21lZHkkQUluc193aG9sZQpDb21lZHlfTVBGQ193aG9sZSA8LSBBbGxTdWJzX05ldXJhbEFjdGl2YXRpb25fQ29tZWR5JE1QRkNfd2hvbGUKCkhvcnJvcl9OQWNjX3dob2xlIDwtIEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbl9Ib3Jyb3IkTkFjY193aG9sZQpIb3Jyb3JfQUluc193aG9sZSA8LSBBbGxTdWJzX05ldXJhbEFjdGl2YXRpb25fSG9ycm9yJEFJbnNfd2hvbGUKSG9ycm9yX01QRkNfd2hvbGUgPC0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uX0hvcnJvciRNUEZDX3dob2xlCgojIERlZmluZSBtb2RlbHMuIApNNl9kZiA8LSBkYXRhLmZyYW1lKEFsbF9OQWNjX3dob2xlLCBBbGxfQUluc193aG9sZSwgQWxsX01QRkNfd2hvbGUpIApNNl9DX2RmIDwtIGRhdGEuZnJhbWUoQ29tZWR5X05BY2Nfd2hvbGUsIENvbWVkeV9BSW5zX3dob2xlLCBDb21lZHlfTVBGQ193aG9sZSkgCk02X0hfZGYgPC0gZGF0YS5mcmFtZShIb3Jyb3JfTkFjY193aG9sZSwgSG9ycm9yX0FJbnNfd2hvbGUsIEhvcnJvcl9NUEZDX3dob2xlKSAKCk03X2RmIDwtIGRhdGEuZnJhbWUoQWxsX0dyb3NzX00xX2xvZywgQWxsX1BBLCBBbGxfTkEsIEFsbF9OQWNjX3dob2xlLCBBbGxfQUluc193aG9sZSwgQWxsX01QRkNfd2hvbGUpIApNN19DX2RmIDwtIGRhdGEuZnJhbWUoQ29tZWR5X0dyb3NzX00xX2xvZywgQ29tZWR5X1BBLCBDb21lZHlfTkEsIENvbWVkeV9OQWNjX3dob2xlLAogICAgICAgICAgICAgICAgICAgICAgQ29tZWR5X0FJbnNfd2hvbGUsIENvbWVkeV9NUEZDX3dob2xlKSAKTTdfSF9kZiA8LSBkYXRhLmZyYW1lKEhvcnJvcl9Hcm9zc19NMV9sb2csIEhvcnJvcl9QQSwgSG9ycm9yX05BLCBIb3Jyb3JfTkFjY193aG9sZSwKICAgICAgICAgICAgICAgICAgICAgIEhvcnJvcl9BSW5zX3dob2xlLCBIb3Jyb3JfTVBGQ193aG9sZSkgCmBgYAoKYGBge3J9CiMgRGVmaW5lIG9uc2V0IHZhcmlhYmxlcy4gCkFsbF9OQWNjX29uc2V0IDwtIEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbiROQWNjX29uc2V0CkFsbF9BSW5zX29uc2V0IDwtIEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbiRBSW5zX29uc2V0CkFsbF9NUEZDX29uc2V0IDwtIEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbiRNUEZDX29uc2V0CgpDb21lZHlfTkFjY19vbnNldCA8LSBBbGxTdWJzX05ldXJhbEFjdGl2YXRpb25fQ29tZWR5JE5BY2Nfb25zZXQKQ29tZWR5X0FJbnNfb25zZXQgPC0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uX0NvbWVkeSRBSW5zX29uc2V0CkNvbWVkeV9NUEZDX29uc2V0IDwtIEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbl9Db21lZHkkTVBGQ19vbnNldAoKSG9ycm9yX05BY2Nfb25zZXQgPC0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uX0hvcnJvciROQWNjX29uc2V0CkhvcnJvcl9BSW5zX29uc2V0IDwtIEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbl9Ib3Jyb3IkQUluc19vbnNldApIb3Jyb3JfTVBGQ19vbnNldCA8LSBBbGxTdWJzX05ldXJhbEFjdGl2YXRpb25fSG9ycm9yJE1QRkNfb25zZXQKCiMgRGVmaW5lIG1vZGVscy4gCk04X2RmIDwtIGRhdGEuZnJhbWUoQWxsX05BY2Nfb25zZXQsIEFsbF9BSW5zX29uc2V0LCBBbGxfTVBGQ19vbnNldCkgCk04X0NfZGYgPC0gZGF0YS5mcmFtZShDb21lZHlfTkFjY19vbnNldCwgQ29tZWR5X0FJbnNfb25zZXQsIENvbWVkeV9NUEZDX29uc2V0KSAKTThfSF9kZiA8LSBkYXRhLmZyYW1lKEhvcnJvcl9OQWNjX29uc2V0LCBIb3Jyb3JfQUluc19vbnNldCwgSG9ycm9yX01QRkNfb25zZXQpIAoKTTlfZGYgPC0gZGF0YS5mcmFtZShBbGxfR3Jvc3NfTTFfbG9nLCBBbGxfUEEsIEFsbF9OQSwgQWxsX05BY2Nfb25zZXQsIEFsbF9BSW5zX29uc2V0LCBBbGxfTVBGQ19vbnNldCkgCk05X0NfZGYgPC0gZGF0YS5mcmFtZShDb21lZHlfR3Jvc3NfTTFfbG9nLCBDb21lZHlfUEEsIENvbWVkeV9OQSwgQ29tZWR5X05BY2Nfb25zZXQsCiAgICAgICAgICAgICAgICAgICAgICBDb21lZHlfQUluc19vbnNldCwgQ29tZWR5X01QRkNfb25zZXQpIApNOV9IX2RmIDwtIGRhdGEuZnJhbWUoSG9ycm9yX0dyb3NzX00xX2xvZywgSG9ycm9yX1BBLCBIb3Jyb3JfTkEsIEhvcnJvcl9OQWNjX29uc2V0LAogICAgICAgICAgICAgICAgICAgICAgSG9ycm9yX0FJbnNfb25zZXQsIEhvcnJvcl9NUEZDX29uc2V0KSAKYGBgCgpgYGB7cn0KIyBEZWZpbmUgbWlkZGxlIHZhcmlhYmxlcy4gCkFsbF9OQWNjX21pZGRsZSA8LSBBbGxTdWJzX05ldXJhbEFjdGl2YXRpb24kTkFjY19taWRkbGUKQWxsX0FJbnNfbWlkZGxlIDwtIEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbiRBSW5zX21pZGRsZQpBbGxfTVBGQ19taWRkbGUgPC0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uJE1QRkNfbWlkZGxlCgpDb21lZHlfTkFjY19taWRkbGUgPC0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uX0NvbWVkeSROQWNjX21pZGRsZQpDb21lZHlfQUluc19taWRkbGUgPC0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uX0NvbWVkeSRBSW5zX21pZGRsZQpDb21lZHlfTVBGQ19taWRkbGUgPC0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uX0NvbWVkeSRNUEZDX21pZGRsZQoKSG9ycm9yX05BY2NfbWlkZGxlIDwtIEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbl9Ib3Jyb3IkTkFjY19taWRkbGUKSG9ycm9yX0FJbnNfbWlkZGxlIDwtIEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbl9Ib3Jyb3IkQUluc19taWRkbGUKSG9ycm9yX01QRkNfbWlkZGxlIDwtIEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbl9Ib3Jyb3IkTVBGQ19taWRkbGUKCiMgRGVmaW5lIG1vZGVscy4gCk0xMF9kZiA8LSBkYXRhLmZyYW1lKEFsbF9OQWNjX21pZGRsZSwgQWxsX0FJbnNfbWlkZGxlLCBBbGxfTVBGQ19taWRkbGUpIApNMTBfQ19kZiA8LSBkYXRhLmZyYW1lKENvbWVkeV9OQWNjX21pZGRsZSwgQ29tZWR5X0FJbnNfbWlkZGxlLCBDb21lZHlfTVBGQ19taWRkbGUpIApNMTBfSF9kZiA8LSBkYXRhLmZyYW1lKEhvcnJvcl9OQWNjX21pZGRsZSwgSG9ycm9yX0FJbnNfbWlkZGxlLCBIb3Jyb3JfTVBGQ19taWRkbGUpIAoKTTExX2RmIDwtIGRhdGEuZnJhbWUoQWxsX0dyb3NzX00xX2xvZywgQWxsX1BBLCBBbGxfTkEsIEFsbF9OQWNjX21pZGRsZSwgQWxsX0FJbnNfbWlkZGxlLCBBbGxfTVBGQ19taWRkbGUpIApNMTFfQ19kZiA8LSBkYXRhLmZyYW1lKENvbWVkeV9Hcm9zc19NMV9sb2csIENvbWVkeV9QQSwgQ29tZWR5X05BLCBDb21lZHlfTkFjY19taWRkbGUsCiAgICAgICAgICAgICAgICAgICAgICBDb21lZHlfQUluc19taWRkbGUsIENvbWVkeV9NUEZDX21pZGRsZSkgCk0xMV9IX2RmIDwtIGRhdGEuZnJhbWUoSG9ycm9yX0dyb3NzX00xX2xvZywgSG9ycm9yX1BBLCBIb3Jyb3JfTkEsIEhvcnJvcl9OQWNjX21pZGRsZSwKICAgICAgICAgICAgICAgICAgICAgIEhvcnJvcl9BSW5zX21pZGRsZSwgSG9ycm9yX01QRkNfbWlkZGxlKSAKYGBgCgpgYGB7cn0KIyBEZWZpbmUgb2Zmc2V0IHZhcmlhYmxlcy4gCkFsbF9OQWNjX29mZnNldCA8LSBBbGxTdWJzX05ldXJhbEFjdGl2YXRpb24kTkFjY19vZmZzZXQKQWxsX0FJbnNfb2Zmc2V0IDwtIEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbiRBSW5zX29mZnNldApBbGxfTVBGQ19vZmZzZXQgPC0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uJE1QRkNfb2Zmc2V0CgpDb21lZHlfTkFjY19vZmZzZXQgPC0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uX0NvbWVkeSROQWNjX29mZnNldApDb21lZHlfQUluc19vZmZzZXQgPC0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uX0NvbWVkeSRBSW5zX29mZnNldApDb21lZHlfTVBGQ19vZmZzZXQgPC0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uX0NvbWVkeSRNUEZDX29mZnNldAoKSG9ycm9yX05BY2Nfb2Zmc2V0IDwtIEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbl9Ib3Jyb3IkTkFjY19vZmZzZXQKSG9ycm9yX0FJbnNfb2Zmc2V0IDwtIEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbl9Ib3Jyb3IkQUluc19vZmZzZXQKSG9ycm9yX01QRkNfb2Zmc2V0IDwtIEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbl9Ib3Jyb3IkTVBGQ19vZmZzZXQKCiMgRGVmaW5lIG1vZGVscy4gCk0xMl9kZiA8LSBkYXRhLmZyYW1lKEFsbF9OQWNjX29mZnNldCwgQWxsX0FJbnNfb2Zmc2V0LCBBbGxfTVBGQ19vZmZzZXQpIApNMTJfQ19kZiA8LSBkYXRhLmZyYW1lKENvbWVkeV9OQWNjX29mZnNldCwgQ29tZWR5X0FJbnNfb2Zmc2V0LCBDb21lZHlfTVBGQ19vZmZzZXQpIApNMTJfSF9kZiA8LSBkYXRhLmZyYW1lKEhvcnJvcl9OQWNjX29mZnNldCwgSG9ycm9yX0FJbnNfb2Zmc2V0LCBIb3Jyb3JfTVBGQ19vZmZzZXQpIAoKTTEzX2RmIDwtIGRhdGEuZnJhbWUoQWxsX0dyb3NzX00xX2xvZywgQWxsX1BBLCBBbGxfTkEsIEFsbF9OQWNjX29mZnNldCwgQWxsX0FJbnNfb2Zmc2V0LCBBbGxfTVBGQ19vZmZzZXQpIApNMTNfQ19kZiA8LSBkYXRhLmZyYW1lKENvbWVkeV9Hcm9zc19NMV9sb2csIENvbWVkeV9QQSwgQ29tZWR5X05BLCBDb21lZHlfTkFjY19vZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgICBDb21lZHlfQUluc19vZmZzZXQsIENvbWVkeV9NUEZDX29mZnNldCkgCk0xM19IX2RmIDwtIGRhdGEuZnJhbWUoSG9ycm9yX0dyb3NzX00xX2xvZywgSG9ycm9yX1BBLCBIb3Jyb3JfTkEsIEhvcnJvcl9OQWNjX29mZnNldCwKICAgICAgICAgICAgICAgICAgICAgIEhvcnJvcl9BSW5zX29mZnNldCwgSG9ycm9yX01QRkNfb2Zmc2V0KSAKYGBgCgpgYGB7cn0KCk0xNF9kZiA8LSBkYXRhLmZyYW1lKEFsbF9Hcm9zc19NMV9sb2csIEFsbF9QQSwgQWxsX05BLCBBbGxfTkFjY19vbnNldCwgQWxsX0FJbnNfbWlkZGxlLCBBbGxfTVBGQ19vZmZzZXQpIApNMTRfQ19kZiA8LSBkYXRhLmZyYW1lKENvbWVkeV9Hcm9zc19NMV9sb2csIENvbWVkeV9QQSwgQ29tZWR5X05BLCBDb21lZHlfTkFjY19vbnNldCwKICAgICAgICAgICAgICAgICAgICAgIENvbWVkeV9BSW5zX21pZGRsZSwgQ29tZWR5X01QRkNfb2Zmc2V0KSAKTTE0X0hfZGYgPC0gZGF0YS5mcmFtZShIb3Jyb3JfR3Jvc3NfTTFfbG9nLCBIb3Jyb3JfUEEsIEhvcnJvcl9OQSwgSG9ycm9yX05BY2Nfb25zZXQsCiAgICAgICAgICAgICAgICAgICAgICBIb3Jyb3JfQUluc19taWRkbGUsIEhvcnJvcl9NUEZDX29mZnNldCkgCmBgYAoKIyBOb3RlczogCiAtIEhhdmUgbm90ZSByZW1vdmVkIG91dGxpZXJzIGZyb20gZGF0YS4KCiMgTmV1cm9mb3JlY2FzdGluZzogRmlyc3QgTW9udGggVVMuCiMjIE0xOiBBZ2dyZWdzdGUgZGF0YSAKYGBge3IsIGVjaG8gPSBGQUxTRX0KTTEgPC0gbG0obG9nKEdyb3NzX1VTX00xKSB+IFR5cGUgKwogICAgICAgICArIHNjYWxlKFRoZWF0ZXJzX1VTX00xKQogICAgICAgICAjKyBXZWVrc19hdmdfcGVyX3RoZWF0ZXIKICAgICAgICAgKyBUeXBlOnNjYWxlKFRoZWF0ZXJzX1VTX00xKQogICAgICAgICAsIGRhdGEgPSBBbGxTdWJzX05ldXJhbEFjdGl2YXRpb24gJT4lIG11dGF0ZShUeXBlID0gZmFjdG9yKFR5cGUsIGxldmVscyA9IGMoImhvcnJvciIsICJjb21lZHkiKSkpKQpzdW1tYXJ5KE0xKQpyLnNxdWFyZWRHTE1NKE0xKQpBSUMoTTEpCgojIENyZWF0ZSBwYWlycyBwbG90LiAKZ2dwYWlycyhNMV9kZikKZ2dwYWlycyhNMV9DX2RmKQpnZ3BhaXJzKE0xX0hfZGYpCmBgYAoKCgojIyBNMjogQWZmZWN0aXZlIGRhdGEgYWxvbmUKYGBge3IsIGVjaG8gPSBGQUxTRX0KTTIgPC0gbG0obG9nKEdyb3NzX1VTX00xKSB+IFR5cGUgCiAgICAgICAgICsgc2NhbGUoUG9zX2Fyb3VzYWxfc2NhbGVkKSAKICAgICAgICAgKyBzY2FsZShOZWdfYXJvdXNhbF9zY2FsZWQpCiAgICAgICAgICsgVHlwZTpzY2FsZShQb3NfYXJvdXNhbF9zY2FsZWQpCiAgICAgICAgICsgVHlwZTpzY2FsZShOZWdfYXJvdXNhbF9zY2FsZWQpCiAgICAgICAgICwgZGF0YSA9IEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbiAlPiUgbXV0YXRlKFR5cGUgPSBmYWN0b3IoVHlwZSwgbGV2ZWxzID0gYygiaG9ycm9yIiwgImNvbWVkeSIpKSkpCnN1bW1hcnkoTTIpCnIuc3F1YXJlZEdMTU0oTTIpCkFJQyhNMikKCiMgQ3JlYXRlIHBhaXJzIHBsb3QuIApnZ3BhaXJzKE0yX2RmKQpnZ3BhaXJzKE0yX0NfZGYpCmdncGFpcnMoTTJfSF9kZikKYGBgCgojIyBNMzogQWdncmVnYXRlIGFuZCBhZmZlY3RpdmUgZGF0YSBhbG9uZQpgYGB7ciwgZWNobyA9IEZBTFNFfQpNMyA8LSBsbShsb2coR3Jvc3NfVVNfTTEpIH4gVHlwZSAKICAgICAgICAgIysgc2NhbGUoVGhlYXRlcnNfVVNfTTEpCiAgICAgICAgICsgc2NhbGUoUG9zX2Fyb3VzYWxfc2NhbGVkKSAKICAgICAgICAgKyBzY2FsZShOZWdfYXJvdXNhbF9zY2FsZWQpCiAgICAgICAgICMrIFR5cGU6c2NhbGUoVGhlYXRlcnNfVVNfTTEpCiAgICAgICAgICsgVHlwZTpzY2FsZShQb3NfYXJvdXNhbF9zY2FsZWQpCiAgICAgICAgICsgVHlwZTpzY2FsZShOZWdfYXJvdXNhbF9zY2FsZWQpCiAgICAgICAgICwgZGF0YSA9IEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbiAlPiUgbXV0YXRlKFR5cGUgPSBmYWN0b3IoVHlwZSwgbGV2ZWxzID0gYygiaG9ycm9yIiwgImNvbWVkeSIpKSkpCnN1bW1hcnkoTTMpCnIuc3F1YXJlZEdMTU0oTTMpCkFJQyhNMykKYGBgCgojIE00OiBJU0MgZGF0YSBhbG9uZQpgYGB7ciwgZWNobyA9IEZBTFNFfQpNNCA8LSBsbShsb2coR3Jvc3NfVVNfTTEpIH4gVHlwZSArIAogICAgICAgICAgICAgICsgc2NhbGUoTkFjY19JU0MpIAogICAgICAgICAgICAgICsgc2NhbGUoQUluc19JU0MpIAogICAgICAgICAgICAgICsgc2NhbGUoTVBGQ19JU0MpIAogICAgICAgICAgICAgICsgVHlwZTpzY2FsZShOQWNjX0lTQykgCiAgICAgICAgICAgICAgKyBUeXBlOnNjYWxlKEFJbnNfSVNDKSAKICAgICAgICAgICAgICArIFR5cGU6c2NhbGUoTVBGQ19JU0MpIAogICAgICAgICAgICAgICwgZGF0YSA9IEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbiAlPiUgbXV0YXRlKFR5cGUgPSBmYWN0b3IoVHlwZSwgbGV2ZWxzID0gYygiaG9ycm9yIiwgImNvbWVkeSIpKSkpCnN1bW1hcnkoTTQpCnIuc3F1YXJlZEdMTU0oTTQpCkFJQyhNNCkKCiMgQ3JlYXRlIHBhaXJzIHBsb3QuIApnZ3BhaXJzKE00X2RmKQpnZ3BhaXJzKE00X0NfZGYpCmdncGFpcnMoTTRfSF9kZikKYGBgCgojIE01OiBJU0MgZGF0YSArIGFmZmVjdGl2ZSBkYXRhICsgYmVoYXZpb3JhbCBkYXRhCmBgYHtyLCBlY2hvID0gRkFMU0V9Ck01IDwtIGxtKGxvZyhHcm9zc19VU19NMSkgfiBUeXBlIAogICAgICAgICAgICAgKyBzY2FsZShUaGVhdGVyc19VU19NMSkgCiAgICAgICAgICAgICArIHNjYWxlKFBvc19hcm91c2FsX3NjYWxlZCkgCiAgICAgICAgICAgICArIHNjYWxlKE5lZ19hcm91c2FsX3NjYWxlZCkgIAogICAgICAgICAgICAgIysgc2NhbGUoV19zY29yZV9zY2FsZWQpIAogICAgICAgICAgICAgKyBzY2FsZShOQWNjX0lTQykgCiAgICAgICAgICAgICArIHNjYWxlKEFJbnNfSVNDKSAKICAgICAgICAgICAgICsgc2NhbGUoTVBGQ19JU0MpIAogICAgICAgICAgICAgKyBUeXBlOnNjYWxlKFRoZWF0ZXJzX1VTX00xKSAKICAgICAgICAgICAgICsgVHlwZTpzY2FsZShQb3NfYXJvdXNhbF9zY2FsZWQpCiAgICAgICAgICAgICArIFR5cGU6c2NhbGUoTmVnX2Fyb3VzYWxfc2NhbGVkKQogICAgICAgICAgICAgIysgVHlwZTpzY2FsZShXX3Njb3JlX3NjYWxlZCkKICAgICAgICAgICAgICsgVHlwZTpzY2FsZShOQWNjX0lTQykgCiAgICAgICAgICAgICArIFR5cGU6c2NhbGUoQUluc19JU0MpIAogICAgICAgICAgICAgKyBUeXBlOnNjYWxlKE1QRkNfSVNDKQogICAgICAgICAgICAgLCBkYXRhID0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uICU+JSBtdXRhdGUoVHlwZSA9IGZhY3RvcihUeXBlLCBsZXZlbHMgPSBjKCJob3Jyb3IiLCAiY29tZWR5IikpKSkKc3VtbWFyeShNNSkKci5zcXVhcmVkR0xNTShNNSkKQUlDKE01KQoKIyBDcmVhdGUgcGFpcnMgcGxvdC4gCmdncGFpcnMoTTVfZGYpCmdncGFpcnMoTTVfQ19kZikKZ2dwYWlycyhNNV9IX2RmKQpgYGAKCiMgTTY6IE5ldXJhbCB3aG9sZSBkYXRhIGFsb25lCmBgYHtyLCBlY2hvID0gRkFMU0V9Ck02IDwtIGxtKGxvZyhHcm9zc19VU19NMSkgfiBUeXBlICsgCiAgICAgICAgICAgICAgIysgVGhlYXRlcnNfVVNfVzFfbnVtIAogICAgICAgICAgICAgICsgc2NhbGUoTkFjY193aG9sZSkgCiAgICAgICAgICAgICAgKyBzY2FsZShBSW5zX3dob2xlKSAKICAgICAgICAgICAgICArIHNjYWxlKE1QRkNfd2hvbGUpIAogICAgICAgICAgICAgICsgVHlwZTpzY2FsZShOQWNjX3dob2xlKSAKICAgICAgICAgICAgICArIFR5cGU6c2NhbGUoQUluc193aG9sZSkgCiAgICAgICAgICAgICAgKyBUeXBlOnNjYWxlKE1QRkNfd2hvbGUpIAogICAgICAgICAgICAgICwgZGF0YSA9IEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbiAlPiUgbXV0YXRlKFR5cGUgPSBmYWN0b3IoVHlwZSwgbGV2ZWxzID0gYygiaG9ycm9yIiwgImNvbWVkeSIpKSkpCnN1bW1hcnkoTTYpCnIuc3F1YXJlZEdMTU0oTTYpCkFJQyhNNikKCiMgQ3JlYXRlIHBhaXJzIHBsb3QuIApnZ3BhaXJzKE02X2RmKQpnZ3BhaXJzKE02X0NfZGYpCmdncGFpcnMoTTZfSF9kZikKYGBgCgojIE03OiBOZXVyYWwgd2hvbGUgZGF0YSArIGFmZmVjdGl2ZSBkYXRhICsgYmVoYXZpb3JhbCBkYXRhCmBgYHtyLCBlY2hvID0gRkFMU0V9Ck03IDwtIGxtKGxvZyhHcm9zc19VU19NMSkgfiBUeXBlIAogICAgICAgICAgICAgKyBzY2FsZShUaGVhdGVyc19VU19NMSkKICAgICAgICAgICAgICsgc2NhbGUoUG9zX2Fyb3VzYWxfc2NhbGVkKSAKICAgICAgICAgICAgICsgc2NhbGUoTmVnX2Fyb3VzYWxfc2NhbGVkKSAgCiAgICAgICAgICAgICArIHNjYWxlKE5BY2Nfd2hvbGUpIAogICAgICAgICAgICAgKyBzY2FsZShBSW5zX3dob2xlKSAKICAgICAgICAgICAgICsgc2NhbGUoTVBGQ193aG9sZSkgCiAgICAgICAgICAgICArIFR5cGU6c2NhbGUoVGhlYXRlcnNfVVNfTTEpCiAgICAgICAgICAgICArIFR5cGU6c2NhbGUoUG9zX2Fyb3VzYWxfc2NhbGVkKQogICAgICAgICAgICAgKyBUeXBlOnNjYWxlKE5lZ19hcm91c2FsX3NjYWxlZCkKICAgICAgICAgICAgICsgVHlwZTpzY2FsZShOQWNjX3dob2xlKSAKICAgICAgICAgICAgICsgVHlwZTpzY2FsZShBSW5zX3dob2xlKSAKICAgICAgICAgICAgICsgVHlwZTpzY2FsZShNUEZDX3dob2xlKQogICAgICAgICAgICAgLCBkYXRhID0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uICU+JSBtdXRhdGUoVHlwZSA9IGZhY3RvcihUeXBlLCBsZXZlbHMgPSBjKCJob3Jyb3IiLCAiY29tZWR5IikpKSkKc3VtbWFyeShNNykKci5zcXVhcmVkR0xNTShNNykKQUlDKE03KQoKIyBDcmVhdGUgcGFpcnMgcGxvdC4gCmdncGFpcnMoTTdfZGYpCmdncGFpcnMoTTdfQ19kZikKZ2dwYWlycyhNN19IX2RmKQpgYGAKCiMgTTg6IE5ldXJhbCBvbnNldCBkYXRhIGFsb25lCmBgYHtyLCBlY2hvID0gRkFMU0V9Ck04IDwtIGxtKGxvZyhHcm9zc19VU19NMSkgfiBUeXBlICsgCiAgICAgICAgICAgICAgKyBzY2FsZShOQWNjX29uc2V0KSAKICAgICAgICAgICAgICArIHNjYWxlKEFJbnNfb25zZXQpIAogICAgICAgICAgICAgICsgc2NhbGUoTVBGQ19vbnNldCkgCiAgICAgICAgICAgICAgKyBUeXBlOnNjYWxlKE5BY2Nfb25zZXQpIAogICAgICAgICAgICAgICsgVHlwZTpzY2FsZShBSW5zX29uc2V0KSAKICAgICAgICAgICAgICArIFR5cGU6c2NhbGUoTVBGQ19vbnNldCkgCiAgICAgICAgICAgICAgLCBkYXRhID0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uICU+JSBtdXRhdGUoVHlwZSA9IGZhY3RvcihUeXBlLCBsZXZlbHMgPSBjKCJob3Jyb3IiLCAiY29tZWR5IikpKSkKc3VtbWFyeShNOCkKci5zcXVhcmVkR0xNTShNOCkKQUlDKE04KQoKIyBDcmVhdGUgcGFpcnMgcGxvdC4gCmdncGFpcnMoTThfZGYpCmdncGFpcnMoTThfQ19kZikKZ2dwYWlycyhNOF9IX2RmKQpgYGAKCiMgTTk6IE5ldXJhbCBvbnNldCBkYXRhICsgYWZmZWN0aXZlIGRhdGEgKyBiZWhhdmlvcmFsIGRhdGEKYGBge3IsIGVjaG8gPSBGQUxTRX0KTTkgPC0gbG0obG9nKEdyb3NzX1VTX00xKSB+IFR5cGUgCiAgICAgICAgICAgICArIHNjYWxlKFRoZWF0ZXJzX1VTX00xKQogICAgICAgICAgICAgIysgVG90YWxfd2Vla3MgCiAgICAgICAgICAgICAjKyBXZWVrc19hdmdfcGVyX3RoZWF0ZXIKICAgICAgICAgICAgICsgc2NhbGUoUG9zX2Fyb3VzYWxfc2NhbGVkKSAKICAgICAgICAgICAgICsgc2NhbGUoTmVnX2Fyb3VzYWxfc2NhbGVkKSAgCiAgICAgICAgICAgICAjKyBzY2FsZShXX3Njb3JlX3NjYWxlZCkgCiAgICAgICAgICAgICArIHNjYWxlKE5BY2Nfb25zZXQpIAogICAgICAgICAgICAgKyBzY2FsZShBSW5zX29uc2V0KSAKICAgICAgICAgICAgICsgc2NhbGUoTVBGQ19vbnNldCkgCiAgICAgICAgICAgICArIFR5cGU6c2NhbGUoVGhlYXRlcnNfVVNfTTEpCiAgICAgICAgICAgICArIFR5cGU6c2NhbGUoUG9zX2Fyb3VzYWxfc2NhbGVkKQogICAgICAgICAgICAgKyBUeXBlOnNjYWxlKE5lZ19hcm91c2FsX3NjYWxlZCkKICAgICAgICAgICAgICMrIFR5cGU6c2NhbGUoV19zY29yZV9zY2FsZWQpCiAgICAgICAgICAgICArIFR5cGU6c2NhbGUoTkFjY19vbnNldCkgCiAgICAgICAgICAgICArIFR5cGU6c2NhbGUoQUluc19vbnNldCkgCiAgICAgICAgICAgICArIFR5cGU6c2NhbGUoTVBGQ19vbnNldCkKICAgICAgICAgICAgICwgZGF0YSA9IEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbiAlPiUgbXV0YXRlKFR5cGUgPSBmYWN0b3IoVHlwZSwgbGV2ZWxzID0gYygiaG9ycm9yIiwgImNvbWVkeSIpKSkpCnN1bW1hcnkoTTkpCnIuc3F1YXJlZEdMTU0oTTkpCkFJQyhNOSkKCiMgQ3JlYXRlIHBhaXJzIHBsb3QuIApnZ3BhaXJzKE05X2RmKQpnZ3BhaXJzKE05X0NfZGYpCmdncGFpcnMoTTlfSF9kZikKYGBgCgojIE0xMDogTmV1cmFsIG1pZGRsZSBkYXRhIGFsb25lCmBgYHtyLCBlY2hvID0gRkFMU0V9Ck0xMCA8LSBsbShsb2coR3Jvc3NfVVNfTTEpIH4gVHlwZSArIAogICAgICAgICAgICAgICsgc2NhbGUoTkFjY19taWRkbGUpIAogICAgICAgICAgICAgICsgc2NhbGUoQUluc19taWRkbGUpIAogICAgICAgICAgICAgICsgc2NhbGUoTVBGQ19taWRkbGUpIAogICAgICAgICAgICAgICsgVHlwZTpzY2FsZShOQWNjX21pZGRsZSkgCiAgICAgICAgICAgICAgKyBUeXBlOnNjYWxlKEFJbnNfbWlkZGxlKSAKICAgICAgICAgICAgICArIFR5cGU6c2NhbGUoTVBGQ19taWRkbGUpIAogICAgICAgICAgICAgICwgZGF0YSA9IEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbiAlPiUgbXV0YXRlKFR5cGUgPSBmYWN0b3IoVHlwZSwgbGV2ZWxzID0gYygiaG9ycm9yIiwgImNvbWVkeSIpKSkpCnN1bW1hcnkoTTEwKQpyLnNxdWFyZWRHTE1NKE0xMCkKQUlDKE0xMCkKCiMgQ3JlYXRlIHBhaXJzIHBsb3QuIApnZ3BhaXJzKE0xMF9kZikKZ2dwYWlycyhNMTBfQ19kZikKZ2dwYWlycyhNMTBfSF9kZikKYGBgCgojIE0xMTogTmV1cmFsIG1pZGRsZSBkYXRhICsgYWZmZWN0aXZlIGRhdGEgKyBiZWhhdmlvcmFsIGRhdGEKYGBge3IsIGVjaG8gPSBGQUxTRX0KTTExIDwtIGxtKGxvZyhHcm9zc19VU19NMSkgfiBUeXBlIAogICAgICAgICAgICAgKyBzY2FsZShUaGVhdGVyc19VU19NMSkKICAgICAgICAgICAgICMrIFRvdGFsX3dlZWtzIAogICAgICAgICAgICAgIysgV2Vla3NfYXZnX3Blcl90aGVhdGVyCiAgICAgICAgICAgICArIHNjYWxlKFBvc19hcm91c2FsX3NjYWxlZCkgCiAgICAgICAgICAgICArIHNjYWxlKE5lZ19hcm91c2FsX3NjYWxlZCkgIAogICAgICAgICAgICAgIysgc2NhbGUoV19zY29yZV9zY2FsZWQpIAogICAgICAgICAgICAgKyBzY2FsZShOQWNjX21pZGRsZSkgCiAgICAgICAgICAgICArIHNjYWxlKEFJbnNfbWlkZGxlKSAKICAgICAgICAgICAgICsgc2NhbGUoTVBGQ19taWRkbGUpIAogICAgICAgICAgICAgKyBUeXBlOnNjYWxlKFRoZWF0ZXJzX1VTX00xKQogICAgICAgICAgICAgKyBUeXBlOnNjYWxlKFBvc19hcm91c2FsX3NjYWxlZCkKICAgICAgICAgICAgICsgVHlwZTpzY2FsZShOZWdfYXJvdXNhbF9zY2FsZWQpCiAgICAgICAgICAgICArIFR5cGU6c2NhbGUoTkFjY19taWRkbGUpIAogICAgICAgICAgICAgKyBUeXBlOnNjYWxlKEFJbnNfbWlkZGxlKSAKICAgICAgICAgICAgICsgVHlwZTpzY2FsZShNUEZDX21pZGRsZSkKICAgICAgICAgICAgICwgZGF0YSA9IEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbiAlPiUgbXV0YXRlKFR5cGUgPSBmYWN0b3IoVHlwZSwgbGV2ZWxzID0gYygiaG9ycm9yIiwgImNvbWVkeSIpKSkpCnN1bW1hcnkoTTExKQpyLnNxdWFyZWRHTE1NKE0xMSkKQUlDKE0xMSkKCiMgQ3JlYXRlIHBhaXJzIHBsb3QuIApnZ3BhaXJzKE0xMV9kZikKZ2dwYWlycyhNMTFfQ19kZikKZ2dwYWlycyhNMTFfSF9kZikKYGBgCgojIE0xMjogTmV1cmFsIG9mZnNldCBkYXRhIGFsb25lCmBgYHtyLCBlY2hvID0gRkFMU0V9Ck0xMiA8LSBsbShsb2coR3Jvc3NfVVNfTTEpIH4gVHlwZSArIAogICAgICAgICAgICAgICsgc2NhbGUoTkFjY19vZmZzZXQpIAogICAgICAgICAgICAgICsgc2NhbGUoQUluc19vZmZzZXQpIAogICAgICAgICAgICAgICsgc2NhbGUoTVBGQ19vZmZzZXQpIAogICAgICAgICAgICAgICsgVHlwZTpzY2FsZShOQWNjX29mZnNldCkgCiAgICAgICAgICAgICAgKyBUeXBlOnNjYWxlKEFJbnNfb2Zmc2V0KSAKICAgICAgICAgICAgICArIFR5cGU6c2NhbGUoTVBGQ19vZmZzZXQpIAogICAgICAgICAgICAgICwgZGF0YSA9IEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbiAlPiUgbXV0YXRlKFR5cGUgPSBmYWN0b3IoVHlwZSwgbGV2ZWxzID0gYygiaG9ycm9yIiwgImNvbWVkeSIpKSkpCnN1bW1hcnkoTTEyKQpyLnNxdWFyZWRHTE1NKE0xMikKQUlDKE0xMikKCiMgQ3JlYXRlIHBhaXJzIHBsb3QuIApnZ3BhaXJzKE0xMl9kZikKZ2dwYWlycyhNMTJfQ19kZikKZ2dwYWlycyhNMTJfSF9kZikKYGBgCgojIE0xMzogTmV1cmFsIG9mZnNldCBkYXRhICsgYWZmZWN0aXZlIGRhdGEgKyBiZWhhdmlvcmFsIGRhdGEKYGBge3IsIGVjaG8gPSBGQUxTRX0KTTEzIDwtIGxtKGxvZyhHcm9zc19VU19NMSkgfiBUeXBlIAogICAgICAgICAgICAgKyBzY2FsZShUaGVhdGVyc19VU19NMSkKICAgICAgICAgICAgICMrIFRvdGFsX3dlZWtzIAogICAgICAgICAgICAgIysgV2Vla3NfYXZnX3Blcl90aGVhdGVyCiAgICAgICAgICAgICArIHNjYWxlKFBvc19hcm91c2FsX3NjYWxlZCkgCiAgICAgICAgICAgICArIHNjYWxlKE5lZ19hcm91c2FsX3NjYWxlZCkgIAogICAgICAgICAgICAgIysgc2NhbGUoV19zY29yZV9zY2FsZWQpIAogICAgICAgICAgICAgKyBzY2FsZShOQWNjX29mZnNldCkgCiAgICAgICAgICAgICArIHNjYWxlKEFJbnNfb2Zmc2V0KSAKICAgICAgICAgICAgICsgc2NhbGUoTVBGQ19vZmZzZXQpIAogICAgICAgICAgICAgKyBUeXBlOnNjYWxlKFRoZWF0ZXJzX1VTX00xKQogICAgICAgICAgICAgKyBUeXBlOnNjYWxlKFBvc19hcm91c2FsX3NjYWxlZCkKICAgICAgICAgICAgICsgVHlwZTpzY2FsZShOZWdfYXJvdXNhbF9zY2FsZWQpCiAgICAgICAgICAgICArIFR5cGU6c2NhbGUoTkFjY19vZmZzZXQpIAogICAgICAgICAgICAgKyBUeXBlOnNjYWxlKEFJbnNfb2Zmc2V0KSAKICAgICAgICAgICAgICsgVHlwZTpzY2FsZShNUEZDX29mZnNldCkKICAgICAgICAgICAgICwgZGF0YSA9IEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbiAlPiUgbXV0YXRlKFR5cGUgPSBmYWN0b3IoVHlwZSwgbGV2ZWxzID0gYygiaG9ycm9yIiwgImNvbWVkeSIpKSkpCnN1bW1hcnkoTTEzKQpyLnNxdWFyZWRHTE1NKE0xMykKQUlDKE0xMykKCiMgQ3JlYXRlIHBhaXJzIHBsb3QuIApnZ3BhaXJzKE0xM19kZikKZ2dwYWlycyhNMTNfQ19kZikKZ2dwYWlycyhNMTNfSF9kZikKYGBgCgojIE0xNDogU2VxdWVuY2UgTW9kZWwKYGBge3IsIGVjaG8gPSBGQUxTRX0KTTE0IDwtIGxtKGxvZyhHcm9zc19VU19NMSkgfiBUeXBlIAogICAgICAgICAgICAgKyBzY2FsZShUaGVhdGVyc19VU19NMSkKICAgICAgICAgICAgICMrIFRvdGFsX3dlZWtzIAogICAgICAgICAgICAgIysgV2Vla3NfYXZnX3Blcl90aGVhdGVyCiAgICAgICAgICAgICAjKyBzY2FsZShQb3NfYXJvdXNhbF9zY2FsZWQpIAogICAgICAgICAgICAgIysgc2NhbGUoTmVnX2Fyb3VzYWxfc2NhbGVkKSAgCiAgICAgICAgICAgICAjKyBzY2FsZShXX3Njb3JlX3NjYWxlZCkgCiAgICAgICAgICAgICArIHNjYWxlKE5BY2Nfb25zZXQpIAogICAgICAgICAgICAgKyBzY2FsZShBSW5zX21pZGRsZSkgCiAgICAgICAgICAgICArIHNjYWxlKE1QRkNfb2Zmc2V0KSAKICAgICAgICAgICAgICMrIFR5cGU6c2NhbGUoVGhlYXRlcnNfVVNfTTEpCiAgICAgICAgICAgICAjKyBUeXBlOnNjYWxlKFBvc19hcm91c2FsX3NjYWxlZCkKICAgICAgICAgICAgICMrIFR5cGU6c2NhbGUoTmVnX2Fyb3VzYWxfc2NhbGVkKQogICAgICAgICAgICAgKyBUeXBlOnNjYWxlKE5BY2Nfb25zZXQpIAogICAgICAgICAgICAgKyBUeXBlOnNjYWxlKEFJbnNfbWlkZGxlKSAKICAgICAgICAgICAgICsgVHlwZTpzY2FsZShNUEZDX29mZnNldCkKICAgICAgICAgICAgICwgZGF0YSA9IEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbiAlPiUgbXV0YXRlKFR5cGUgPSBmYWN0b3IoVHlwZSwgbGV2ZWxzID0gYygiaG9ycm9yIiwgImNvbWVkeSIpKSkpCnN1bW1hcnkoTTE0KQpyLnNxdWFyZWRHTE1NKE0xNCkKQUlDKE0xNCkKYGBgCgojIE0xNTogU2VxdWVuY2UgTW9kZWwgMgpgYGB7ciwgZWNobyA9IEZBTFNFfQogIyBFZmZlY3RzIGJlY29tZSBtb3JlIHNpZ25pZmljYW50IGlmIHdlIHJlbW92ZSAnVGhlYXRlcl9udW0nIHByZWRpY3Rvci4uLiB3ZSBjYW4gZG8gdGhhdCB3aXRoIHRoZSAKIyAnR3Jvc3NPdmVyVGhlYXRlcnMnIHZhcmlhYmxlLCBob3dldmVyIE1QRkMgbG9va3MgYSBiaXQgZnVubnkuICAKTTE1IDwtIGxtKGxvZyhHcm9zc19VU19NMSkgfiBUeXBlCiAgICAgICAgICAgICArIHNjYWxlKFRoZWF0ZXJzX1VTX00xKQogICAgICAgICAgICAgIysgV2Vla3NfYXZnX3Blcl90aGVhdGVyCiAgICAgICAgICAgICArIHNjYWxlKFBvc19hcm91c2FsX3NjYWxlZCkgCiAgICAgICAgICAgICArIHNjYWxlKE5lZ19hcm91c2FsX3NjYWxlZCkgIAogICAgICAgICAgICAgKyBzY2FsZShOQWNjX29uc2V0KSAKICAgICAgICAgICAgICsgc2NhbGUoQUluc19taWRkbGUpIAogICAgICAgICAgICAgKyBzY2FsZShNUEZDX29mZnNldCkgCiAgICAgICAgICAgICArIFR5cGU6c2NhbGUoVGhlYXRlcnNfVVNfTTEpICMgU2hvdWxkIHdlIGhhdmUgYSB0aGVhdGVycyBpbnRlcmFjdGlvbj8gCiAgICAgICAgICAgICArIFR5cGU6c2NhbGUoUG9zX2Fyb3VzYWxfc2NhbGVkKQogICAgICAgICAgICAgKyBUeXBlOnNjYWxlKE5lZ19hcm91c2FsX3NjYWxlZCkKICAgICAgICAgICAgICsgVHlwZTpzY2FsZShOQWNjX29uc2V0KSAKICAgICAgICAgICAgICsgVHlwZTpzY2FsZShBSW5zX21pZGRsZSkgCiAgICAgICAgICAgICArIFR5cGU6c2NhbGUoTVBGQ19vZmZzZXQpCiAgICAgICAgICAgICAsIGRhdGEgPSBBbGxTdWJzX05ldXJhbEFjdGl2YXRpb24gJT4lIG11dGF0ZShUeXBlID0gZmFjdG9yKFR5cGUsIGxldmVscyA9IGMoImhvcnJvciIsICJjb21lZHkiKSkpKQpzdW1tYXJ5KE0xNSkKci5zcXVhcmVkR0xNTShNMTUpCkFJQyhNMTUpCgojIENyZWF0ZSBwYWlycyBwbG90LiAKZ2dwYWlycyhNMTRfZGYpCmdncGFpcnMoTTE0X0NfZGYpCmdncGFpcnMoTTE0X0hfZGYpCmBgYA==